#include <stdio.h>
#include <malloc.h>

void inicializa_pilha (Pilha** pilha) {

	*pilha = NULL;

}	

void empilha (Pilha** pilha, int lin, int col, char direcao) { //TODO aqui mesmo atribui a direcao?

	Pilha* novo;

    novo = (Pilha *)malloc(sizeof(Pilha));

	novo->lin = lin;
	novo->col = col;
	novo->direcao = direcao;
	novo->prox = *pilha;
	*pilha = novo;

}

void desempilha (Pilha** pilha) {

	Pilha* apaga = *pilha;
	
	if (*pilha == NULL)
		return;

	*pilha = (*pilha)->prox;
	free (apaga);

}	

// TODO pesquisar se o movimento eh repetido. Retorno: 1 - movimento eh repetido; 0 - movimento nao eh repetido 
int mov_repetido (Pilha* pilha, int lin, int col) { 

	Pilha* procura = pilha;

	if (pilha == NULL)
		return NULL;

	while (procura != NULL && 
			(procura->lin != lin || procura->col != col))  
	  procura = procura->prox;
	  
	if (procura == NULL)
		return NULL;
	else
		return procura;

}

void imprime_pilha (Pilha** pilha) {

	Pilha* printa = *pilha;

	if (printa == NULL)
		return;

	do{printf("&d&d&c", printa->lin, printa->col, printa->prox);
	   printa = printa->prox;
	} while (printa != NULL);
	
}
